package Traductor.Lexico;

import Traductor.Lexico.Token.TipoToken;

public class EstadoAceptacion implements Estado{
	
	//Atributos
	private boolean retrocede;
	private TipoToken tokenDevuelto;
	private String id;
	private boolean estadoInicial;
	
	//Constructora
	public EstadoAceptacion(String id, TipoToken tokenDevuelto,	boolean retrocede){
		super();
		this.retrocede = retrocede;
		this.tokenDevuelto = tokenDevuelto;
		this.id = id;
		this.estadoInicial = false;
	}
	
	//Accesoras
	public String getId(){
		return id;
	}

	public Token getToken(String lexema){
		String lex = lexema;
		if(retrocede || lexema.charAt(lexema.length()-1)==0)
			lex = lexema.substring(0, lexema.length()-1);
		return new Token(tokenDevuelto, lex);
	}

	public String getSiguienteEstado(){
		return "e0";
	}
	
	//Mutadora
	public void setInicial(boolean inicial){
		this.estadoInicial = inicial;
	}

	//Metodos
	public int transita(char siguiente){
		if(retrocede)
			return -1;
		else
			return 0;
	}

	public boolean estadoInicial(){
		return estadoInicial;
	}
}
